<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .box1 {
        width: 100px;
        height: 100px;
        background: red;
        display: block;
      }

      .box2 {
        width: 100px;
        height: 100px;
        background: blue;
        display: none;
      }

      .box3 {
        width: 100px;
        height: 100px;
        background: yellow;
        display: none;
      }
    </style>
  </head>

  <body>
    <div class="contaner1">
      <button>按钮一</button>
      <button>按钮二</button>
      <button>按钮三</button>
      <div class="box1">1</div>
      <div class="box2">2</div>
      <div class="box3">3</div>
    </div>
    <button class="next">下一页</button>

    <div class="contaner2">
      <button>按钮一</button>
      <button>按钮二</button>
      <button>按钮三</button>
      <div class="box1">1</div>
      <div class="box2">2</div>
      <div class="box3">3</div>
    </div>
    <script>
      // 面向对象：简单的程序 面向过程；
      // 面向对象：需求复杂(属性方法比较多) 涉及对象较多 。
      // 需求一：写一个选项卡；

      // 放所有选项卡的共性功能；
      // 每个选项卡特性功能放在外部；
      // 工厂模式
      // 每个选项卡共性的位置
      function Tab(btns, divs) {
        // let obj = {};  //加原料
        this.divs = divs;
        this.num = 0; //加工原料
        var that = this;
        btns.forEach((btn, key) => {
          btn.onclick = function () {
            that.switchTab(key);
            that.num = key; //当前选项卡所在的位置的下标
          };
        });
      }

      Tab.prototype.switchTab = function switchTab(key) {
        this.divs.forEach((div, index) => {
          if (key == index) {
            div.style.display = "block";
          } else {
            div.style.display = "none";
          }
        });
      };

      var btns1 = document.querySelectorAll(".contaner1 button");
      var divs1 = document.querySelectorAll(".contaner1 div");
      var tab1 = new Tab(btns1, divs1);

      // 实现第一个选项卡的下一页功能；
      // 第一个选项卡的特性功能；
      // 点击切换选项卡
      var btnnext = document.querySelector(".next");
      tab1.num++;
      btnnext.onclick = function () {
        console.log(tab1.num);
        tab1.switchTab(tab1.num);
        tab1.num++;
        if (tab1.num > 2) {
          tab1.num = 0;
        }
      };

      var btns2 = document.querySelectorAll(".contaner2 button");
      var divs2 = document.querySelectorAll(".contaner2 div");

      var tab2 = new Tab(btns2, divs2);
      // 自动切换
      tab2.num++;
      setInterval(() => {
        console.log(tab2.num);
        tab2.switchTab(tab2.num);
        tab2.num++;
        if (tab2.num > 2) {
          tab2.num = 0;
        }
      }, 1000);
    </script>
  </body>
</html>
